<!DOCTYPE html>
<html lang="en-us" dir="ltr" itemscope itemtype="http://schema.org/Article" data-r-output-format="html">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="height=device-height, width=device-width, initial-scale=1.0, minimum-scale=1.0">
    <meta name="generator" content="Hugo 0.147.3">
    <meta name="generator" content="Relearn 8.2.0+220806ce3ced8264fbdd693f77f28216a8a1b6ae">
    <meta name="description" content="Prep: pick a supported device Currently, the Raspberry Pi 5 or Pi 4 B are the recommended platform for using gokrazy, but you can find other supported and upcoming platforms.
Prep: Install Go If you don’t already have Go installed, install the latest Go version.">
    <meta name="author" content="">
    <meta name="twitter:card" content="summary">
    <meta name="twitter:title" content="Quickstart :: gokrazy">
    <meta name="twitter:description" content="Prep: pick a supported device Currently, the Raspberry Pi 5 or Pi 4 B are the recommended platform for using gokrazy, but you can find other supported and upcoming platforms.
Prep: Install Go If you don’t already have Go installed, install the latest Go version.">
    <meta property="og:url" content="https://gokrazy.org/quickstart/index.html">
    <meta property="og:site_name" content="gokrazy">
    <meta property="og:title" content="Quickstart :: gokrazy">
    <meta property="og:description" content="Prep: pick a supported device Currently, the Raspberry Pi 5 or Pi 4 B are the recommended platform for using gokrazy, but you can find other supported and upcoming platforms.
Prep: Install Go If you don’t already have Go installed, install the latest Go version.">
    <meta property="og:locale" content="en_us">
    <meta property="og:type" content="website">
    <meta itemprop="name" content="Quickstart :: gokrazy">
    <meta itemprop="description" content="Prep: pick a supported device Currently, the Raspberry Pi 5 or Pi 4 B are the recommended platform for using gokrazy, but you can find other supported and upcoming platforms.
Prep: Install Go If you don’t already have Go installed, install the latest Go version.">
    <meta itemprop="wordCount" content="731">
    <title>Quickstart :: gokrazy</title>
    <link href="/images/favicon.png?1763621646" rel="icon" type="image/png">
    <link href="/css/auto-complete/auto-complete.min.css?1763621646" rel="stylesheet">
    <script src="/js/auto-complete/auto-complete.min.js?1763621646" defer></script>
    <script src="/js/search-lunr.min.js?1763621646" defer></script>
    <script src="/js/search.min.js?1763621646" defer></script>
    <script>
      window.relearn = window.relearn || {};
      window.relearn.index_js_url="/searchindex.en.js?1763621646";
    </script>
    <script src="/js/lunr/lunr.min.js?1763621646" defer></script>
    <script src="/js/lunr/lunr.stemmer.support.min.js?1763621646" defer></script>
    <script src="/js/lunr/lunr.multi.min.js?1763621646" defer></script>
    <script src="/js/lunr/lunr.en.min.js?1763621646" defer></script>
    <script>
      window.relearn = window.relearn || {};
      window.relearn.contentLangs=['en'];
    </script>
    <link href="/fonts/fontawesome/css/fontawesome-all.min.css?1763621646" rel="stylesheet" media="print" onload="this.media='all';this.onload=null;"><noscript><link href="/fonts/fontawesome/css/fontawesome-all.min.css?1763621646" rel="stylesheet"></noscript>
    <link href="/css/perfect-scrollbar/perfect-scrollbar.min.css?1763621646" rel="stylesheet">
    <link href="/css/theme.min.css?1763621646" rel="stylesheet">
    <link href="/css/format-html.min.css?1763621646" rel="stylesheet" id="R-format-style">
    <script>
      window.relearn = window.relearn || {};
      // configuration
      window.relearn.min = `.min`;
      window.relearn.path='\/quickstart\/index.html';
      window.relearn.relBasePath='..';
      window.relearn.relBaseUri='..';
      window.relearn.absBaseUri='https:\/\/gokrazy.org';
      window.relearn.disableInlineCopyToClipboard=true;
      window.relearn.enableBlockCodeWrap=true;
      // legal
      window.relearn.getItem = (s,n) => {return s.getItem(n)};
      window.relearn.setItem = (s,n,v) => {return s.setItem(n,v)};
      window.relearn.removeItem = (s,n) => {return s.removeItem(n)};
      // translations
      window.T_Copy_to_clipboard = `Copy text to clipboard`;
      window.T_Copied_to_clipboard = `Text copied to clipboard!`;
      window.T_Link_copied_to_clipboard = `Link copied to clipboard!`;
      window.T_Reset_view = `Reset view`;
      window.T_View_reset = `View reset!`;
      window.T_No_results_found = `No results found for "{0}"`;
      window.T_N_results_found = `{1} results found for "{0}"`;
      window.T_Browser_unsupported_feature = `This browser doesn't support this feature`;
      // variant stuff
      window.relearn.themevariants = [ 'auto' ];
      window.relearn.customvariantname = "my-custom-variant";
      window.relearn.changeVariant = function(variant) {
        var oldVariant = document.documentElement.dataset.rThemeVariant;
        window.relearn.setItem(window.localStorage, window.relearn.absBaseUri + "/variant", variant);
        document.documentElement.dataset.rThemeVariant = variant;
        if (oldVariant != variant) {
          document.dispatchEvent( new CustomEvent('themeVariantLoaded', { detail: { variant, oldVariant } }) );
          window.relearn.markVariant();
        }
      }
      window.relearn.markVariant = function() {
        var variant = window.relearn.getItem(window.localStorage, window.relearn.absBaseUri + "/variant");
        document.querySelectorAll(".R-variantswitcher select").forEach((select) => {select.value = variant;});
      }
      window.relearn.initVariant = function() {
        var variant = window.relearn.getItem(window.localStorage, window.relearn.absBaseUri + "/variant") ?? "";
        if( variant == window.relearn.customvariantname ){
        }else if( !variant || !window.relearn.themevariants.includes(variant) ){
          variant = window.relearn.themevariants[0];
          window.relearn.setItem(window.localStorage, window.relearn.absBaseUri + "/variant", variant);
        }
        document.documentElement.dataset.rThemeVariant = variant;
      }
      window.relearn.initVariant();
      window.relearn.markVariant();
    </script>
  </head>
  <body class="mobile-support html" data-url="/quickstart/index.html">
    <div id="R-body" class="default-animation">
      <div id="R-body-overlay"></div>
      <nav id="R-topbar">
        <div class="topbar-wrapper">
          <div class="topbar-sidebar-divider"></div>
          <div class="topbar-area topbar-area-start" data-area="start">
            <div class="topbar-button topbar-button-sidebar" data-content-empty="disable" data-width-s="show" data-width-m="hide" data-width-l="hide">
<span class="btn cstyle button link noborder notitle interactive"><button onclick="toggleNav()" type="button" title="Menu (CTRL&#43;ALT&#43;n)"><i class="fa-fw fas fa-bars"></i></button></span>
            </div>
            <div class="topbar-button topbar-button-toc" data-content-empty="hide" data-width-s="show" data-width-m="show" data-width-l="show">
<span class="btn cstyle button link noborder notitle interactive"><button onclick="toggleTopbarFlyout(this)" type="button" title="Table of Contents (CTRL&#43;ALT&#43;t)"><i class="fa-fw fas fa-list-alt"></i></button></span>
              <div class="topbar-content">
                <div class="topbar-content-wrapper">
<nav class="TableOfContents">
  <ul>
    <li><a href="#prep-pick-a-supported-device">Prep: pick a supported device</a></li>
    <li><a href="#prep-install-go">Prep: Install Go</a></li>
    <li><a href="#prep-install-the-gok-cli">Prep: Install the gok CLI</a></li>
    <li><a href="#step-1-insert-an-sd-card">Step 1: Insert an SD card</a></li>
    <li><a href="#step-2-create-a-gokrazy-instance-and-overwrite-an-sd-card-with-gokrazy">Step 2: Create a gokrazy instance and overwrite an SD card with gokrazy</a></li>
    <li><a href="#step-3-boot-gokrazy">Step 3: Boot gokrazy</a></li>
    <li><a href="#optional-using-the-serial-console">Optional: Using the serial console</a></li>
  </ul>
</nav>
                </div>
              </div>
            </div>
          </div>
          <ol class="topbar-breadcrumbs breadcrumbs highlightable" itemscope itemtype="http://schema.org/BreadcrumbList"><li itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement" class=""><a itemprop="item" href="/index.html"><span itemprop="name">gokrazy Go appliances</span></a><meta itemprop="position" content="1">&nbsp;>&nbsp;</li><li itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement" class=""><span itemprop="name">Quickstart</span><meta itemprop="position" content="2"></li>
          </ol>
          <div class="topbar-area topbar-area-end" data-area="end">
            <div class="topbar-button topbar-button-edit" data-content-empty="disable" data-width-s="area-more" data-width-m="show" data-width-l="show">
<span class="btn cstyle button link noborder notitle interactive"><a href="https://github.com/gokrazy/gokrazy/tree/master/website/content/quickstart/_index.markdown" rel="external" title="Edit (CTRL+ALT+w)"><i class="fa-fw fas fa-pen"></i></a></span>
            </div>
            <div class="topbar-button topbar-button-more" data-content-empty="hide" data-width-s="show" data-width-m="show" data-width-l="show">
<span class="btn cstyle button link noborder notitle interactive"><button onclick="toggleTopbarFlyout(this)" type="button" title="More"><i class="fa-fw fas fa-ellipsis-v"></i></button></span>
              <div class="topbar-content">
                <div class="topbar-content-wrapper">
                  <div class="topbar-area topbar-area-more" data-area="more">
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </nav>
      <div id="R-main-overlay"></div>
      <main id="R-body-inner" class="highlightable quickstart" tabindex="-1">
        <div class="flex-block-wrapper">
<article class="default">
  <header class="headline">
  </header>

<h1 id="quickstart">Quickstart</h1>

<h2 id="prep-pick-a-supported-device">Prep: pick a supported device<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h2>
<p>Currently, the Raspberry Pi 5 or Pi 4 B are the recommended platform for
using gokrazy, but you can find
other <a href="/platforms/">supported and upcoming platforms</a>.</p>
<h2 id="prep-install-go">Prep: Install Go<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h2>
<p>If you don’t already have Go installed, <a href="https://golang.org/dl/">install the latest Go version</a>.</p>
<h2 id="prep-install-the-gok-cli">Prep: Install the gok CLI<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h2>
<p>Now that you have a working Go installation, install the <code>gok</code> command line tool (CLI):</p>
<div class="highlight actionbar-wrapper wrap-code" dir="auto"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>go install github.com/gokrazy/tools/cmd/gok@main</span></span></code></pre></div>
<h2 id="step-1-insert-an-sd-card">Step 1: Insert an SD card<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h2>
<p>Run <code>watch -d1 ls -l '/dev/disk/by-id/*'</code> (see the <a href="/userguide/permanent-data/index.html#notes-about-macos">permanent data section</a> for macOS instructions)
and insert an SD card. Copy the highlighted device name:</p>
<script id="asciicast-G0PosAYGvUSnB3htMpLIz0p68" src="https://asciinema.org/a/G0PosAYGvUSnB3htMpLIz0p68.js" async></script>
<p>In this example, we’ll assume the SD card is accessible as <code>/dev/sdx</code>.</p>
<h2 id="step-2-create-a-gokrazy-instance-and-overwrite-an-sd-card-with-gokrazy">Step 2: Create a gokrazy instance and overwrite an SD card with gokrazy<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h2>
<p>Create a directory for this gokrazy instance:</p>
<div class="highlight actionbar-wrapper wrap-code" dir="auto"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>gok new
</span></span><span style="display:flex;"><span><span style="color:#75715e"># creates an instance named “hello” in --parent_dir default directory ~/gokrazy</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># alternatively, to use a different instance name: gok -i myname new</span></span></span></code></pre></div>
<p>The <code>--parent_dir</code> can also be changed permanently by setting the
<code>GOKRAZY_PARENT_DIR</code> environment variable.</p>
<p>If you’re curious, you can run <code>gok edit</code> to open the generated <code>config.json</code> in
your editor.</p>
<p>To overwrite the entire SD card <code>/dev/sdx</code> with a build of this
gokrazy installation, use:</p>
<div class="highlight actionbar-wrapper wrap-code" dir="auto"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>gok overwrite --full /dev/sdx</span></span></code></pre></div>
<p>The following packages are included in newly created instances by default:</p>
<ul>
<li>github.com/gokrazy/fbstatus</li>
<li>github.com/gokrazy/hello</li>
<li>github.com/gokrazy/serial-busybox</li>
</ul>
<p>The gokrazy packer builds each specified Go program
(e.g. <code>github.com/gokrazy/hello</code>) in a separate build directory, each with its
own <code>go.mod</code> file. See <a href="/development/modules/index.html">Working with Go modules</a> for more
details.</p>
<p>This is what the above <code>gok</code> commands look like in action:</p>
<script id="asciicast-Va7hPXCP1BKCt4DX0wRup52Bl" src="https://asciinema.org/a/Va7hPXCP1BKCt4DX0wRup52Bl.js" async></script>
<details>
<summary style="display: list-item">
Click here to show the <code>gok</code> log output
</summary>
<div class="highlight actionbar-wrapper wrap-code" dir="auto"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>gokrazy gok ga84f00+ on GOARCH=amd64 GOOS=linux
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Build target: CGO_ENABLED=0 GOARCH=arm64 GOOS=linux
</span></span><span style="display:flex;"><span>Build timestamp: 2023-01-12T23:36:34+01:00
</span></span><span style="display:flex;"><span>Loading system CA certificates from /etc/ssl/certs/ca-certificates.crt
</span></span><span style="display:flex;"><span>Building 4 Go packages:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  github.com/gokrazy/fbstatus
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  github.com/gokrazy/hello
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  github.com/gokrazy/serial-busybox
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  github.com/gokrazy/breakglass
</span></span><span style="display:flex;"><span>    will be started with command-line flags
</span></span><span style="display:flex;"><span>      from /home/michael/gokrazy/hello/config.json
</span></span><span style="display:flex;"><span>      last modified: 2023-01-12T23:36:23+01:00 (10s ago)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[done] in 1.40s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Including extra files for Go packages:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  github.com/gokrazy/breakglass
</span></span><span style="display:flex;"><span>    will include extra files in the root file system
</span></span><span style="display:flex;"><span>      from /home/michael/gokrazy/hello/breakglass.authorized_keys
</span></span><span style="display:flex;"><span>      last modified: 2023-01-12T23:36:23+01:00 (12s ago)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Including loadable kernel modules from:
</span></span><span style="display:flex;"><span>/home/michael/go/pkg/mod/github.com/gokrazy/kernel@v0.0.0-20230111172439-0cd82b0bec82/lib/modules
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Feature summary:
</span></span><span style="display:flex;"><span>  use GPT: true
</span></span><span style="display:flex;"><span>  use PARTUUID: true
</span></span><span style="display:flex;"><span>  use GPT PARTUUID: true
</span></span><span style="display:flex;"><span>2023/01/12 23:36:36 partitioning /dev/disk/by-id/usb-TS-RDF5_SD_Transcend_000000000037-0:0 (GPT + Hybrid MBR)
</span></span><span style="display:flex;"><span>2023/01/12 23:36:36 device holds 15931539456 bytes
</span></span><span style="display:flex;"><span>2023/01/12 23:36:36 Re-reading partition table failed: permission denied. Remember to unplug and re-plug the SD card before creating a file system for persistent data, if desired.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Creating boot file system
</span></span><span style="display:flex;"><span>[creating boot file system]
</span></span><span style="display:flex;"><span>Kernel directory: /home/michael/go/pkg/mod/github.com/gokrazy/kernel@v0.0.0-20230111172439-0cd82b0bec82
</span></span><span style="display:flex;"><span>EEPROM update summary:
</span></span><span style="display:flex;"><span>  pieeprom.upd (sig d1e44edf33)
</span></span><span style="display:flex;"><span>  recovery.bin
</span></span><span style="display:flex;"><span>  vl805.bin (sig 6246230ecd)
</span></span><span style="display:flex;"><span>[done] in 0.18s, 71 MiB
</span></span><span style="display:flex;"><span>MBR summary:
</span></span><span style="display:flex;"><span>  LBAs: vmlinuz=51795 cmdline.txt=144875
</span></span><span style="display:flex;"><span>  PARTUUID: 4f9f2cab
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Creating root file system
</span></span><span style="display:flex;"><span>[done] in 0.33s
</span></span><span style="display:flex;"><span>If your applications need to store persistent data, unplug and re-plug the SD card, then create a file system using e.g.:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	mkfs.ext4 /dev/disk/by-partuuid/60c24cc1-f3f9-427a-8199-4f9f2cab0004
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>To boot gokrazy, plug the SD card into a supported device (see https://gokrazy.org/platforms/)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Build complete!
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>To interact with the device, gokrazy provides a web interface reachable at:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	http://gokrazy:&lt;automatically-generated-random-password&gt;@hello/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>In addition, the following Linux consoles are set up:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	1. foreground Linux framebuffer console on HDMI</span></span></code></pre></div>
</details>
<p>It is safe to unplug your SD card once <code>gok</code> returns.</p>
<h2 id="step-3-boot-gokrazy">Step 3: Boot gokrazy<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h2>
<p>After booting from this SD card, your device will:</p>
<ul>
<li>display system status on the monitor connected via HDMI, if any</li>
<li>obtain an IP address for hostname “gokrazy” via DHCP (IPv4) and SLAAC (IPv6)</li>
<li>synchronize the clock using NTP</li>
<li>expose a password-authenticated web interface on private IP addresses<br>
(each instance gets its own password in the <code>Update</code> → <code>HTTPPassword</code> key of its <code>config.json</code>, see <code>gok edit</code>)</li>
<li>supervise all installed programs (only the hello world program in this example)</li>
</ul>
<p>To interact with your device, you can:</p>
<ol>
<li>Open the gokrazy web interface in your browser (easiest option)</li>
<li>Attach a serial console (see below)</li>
<li>Use the <a href="https://github.com/gokrazy/breakglass" rel="external">breakglass</a> package to start an interactive SSH session. <code>gok new</code> sets it up by default.</li>
</ol>
<p>Congratulations! 🎉 You now have a working gokrazy installation!</p>
<p>Next, see the <a href="/userguide/index.html">Configuration guide</a> for details on how to use other
programs.</p>
<h2 id="optional-using-the-serial-console">Optional: Using the serial console<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h2>
<p>See also: <a href="/userguide/instance-config/index.html#serialconsole">Configuration → Instance Config Reference →
SerialConsole</a></p>
<p>If you prefer the serial console, you can optionally connect a serial adapter to
the Raspberry Pi and remove the <code>&quot;SerialConsole&quot;: &quot;disabled&quot;</code> line from your gokrazy
instance’s <code>config.json</code> to make the primary Linux console end up on the serial
console.</p>
<p>When pressing <code>Enter</code> on the serial console, gokrazy will
interactively start either:</p>
<ol>
<li><code>/tmp/serial-busybox/ash</code> (provided by the <a href="https://github.com/gokrazy/serial-busybox" rel="external">serial-busybox</a> package)</li>
<li><code>/perm/sh</code>, if present (supplied by you, the user)</li>
</ol>

  <footer class="footline">
  </footer>
</article>
        </div>
      </main>
    </div>
    <aside id="R-sidebar" class="default-animation">
      <div id="R-header-topbar" class="default-animation"></div>
      <div id="R-header-wrapper" class="default-animation">
        <div id="R-header" class="default-animation">
<img src="/logo.svg" width="100%" alt="gokrazy logo" title="gokrazy logo">

        </div>
        <search><form action="/search/index.html" method="get">
          <div class="searchbox default-animation">
            <button class="search-detail" type="submit" title="Search (CTRL+ALT+f)"><i class="fas fa-search"></i></button>
            <label class="a11y-only" for="R-search-by">Search</label>
            <input data-search-input id="R-search-by" name="search-by" class="search-by" type="search" placeholder="Search...">
            <button class="search-clear" type="button" data-search-clear="" title="Clear search"><i class="fas fa-times" title="Clear search"></i></button>
          </div>
        </form></search>
      </div>
      <div id="R-homelinks" class="default-animation homelinks">
        <div class="R-menu-divider default-animation">
          <hr class="padding">
        </div>
        <div class="R-sidebarmenu R-shortcutmenu-homelinks">
          <ul class="space collapsible-menu">
            <li class="" data-nav-url="/index.html"><a class="padding" href="/index.html"><i class="fa-fw fas fa-home"></i> Home</a></li>
          </ul>
        </div>
        <div class="R-menu-divider default-animation">
          <hr class="padding">
        </div>
        <div class="R-sidebarmenu R-shortcutmenu-headercontrols">
          <ul class="">
          </ul>
        </div>
        <div class="R-menu-divider default-animation">
          <hr class="padding">
        </div>
      </div>
      <div id="R-content-wrapper" class="highlightable">
        <div class="R-sidebarmenu R-shortcutmenu-main">
          <ul class="enlarge morespace collapsible-menu">
            <li class="active " data-nav-url="/quickstart/index.html"><a class="padding" href="/quickstart/index.html"><b>1. </b>Quickstart</a></li>
            <li class="" data-nav-url="/platforms/index.html"><a class="padding" href="/platforms/index.html"><b>2. </b>Supported platforms</a></li>
            <li class="" data-nav-url="/userguide/index.html"><a class="padding" href="/userguide/index.html"><b>3. </b>Configuration</a><ul id="R-subsections-74b4df3a3d9365853f09e9f1dfe7bbba" class="collapsible-menu"></ul></li>
            <li class="" data-nav-url="/packages/index.html"><a class="padding" href="/packages/index.html"><b>4. </b>Available packages</a><ul id="R-subsections-bdf1e8ce92aa8ff6883c617f10480430" class="collapsible-menu"></ul></li>
            <li class="" data-nav-url="/development/index.html"><a class="padding" href="/development/index.html"><b>5. </b>Package development</a><ul id="R-subsections-54b0ce3c97b111c8cd4d107325fd580c" class="collapsible-menu"></ul></li>
          </ul>
        </div>
        <div class="R-sidebarmenu R-shortcutmenu-shortcuts">
          <div class="nav-title padding">More</div>
          <ul class="space collapsible-menu">
            <li class="" data-nav-url="https://github.com/gokrazy/gokrazy"><a class="padding" href="https://github.com/gokrazy/gokrazy" rel="external"><i class='fab fa-github'></i> GitHub repo</a></li>
          </ul>
        </div>
        <div id="R-footer-margin"></div>
        <div class="R-menu-divider default-animation">
          <hr class="padding">
        </div>
        <div class="R-sidebarmenu R-shortcutmenu-footercontrols">
          <ul class="">
          </ul>
        </div>
<div id="R-footer"><p>Built with <a href="https://github.com/McShelby/hugo-theme-relearn" title="love"><i class="fas fa-heart"></i></a> by <a href="https://gohugo.io/">Hugo</a></p></div>
      </div>
    </aside>
    <script src="/js/perfect-scrollbar/perfect-scrollbar.min.js?1763621646" defer></script>
    <script src="/js/theme.min.js?1763621646" defer></script>
    <div id="toast-container" role="status" aria-live="polite" aria-atomic="false"></div>
  </body>
</html>
